home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / dviware / dtl / dvi.doc < prev    next >
Text File  |  1995-02-28  |  5KB  |  155 lines

  1. ``dvi.doc''
  2. Mon 27 Feb 1995
  3. Geoffrey Tobin
  4.  
  5. Description of the DVI file structure.
  6. --------------------------------------
  7.  
  8. Reference:
  9. ----------
  10.  
  11.         CTAN:  dviware/driv-standard/level-0/dvistd0.tex
  12.  
  13.     "The DVI Driver Standard, Level 0",
  14.     by  The TUG DVI Driver Standards Committee  (now defunct)
  15.     chaired by Joachim Schrod.
  16.     Appendix A, "Device-Independent File Format",
  17.     section A.2, "Summary of DVI commands".
  18.  
  19.  
  20. DVI Commands
  21. ------------
  22. Listed in the free format:
  23. "Opcode  Symbol  Parameter[Signed? Bytes]  ...  Action".
  24.  
  25.     
  26.     0    set_char_0    -  set character 0 from current font
  27.     ...
  28.     127  set_char_127  -  set character 127 from current font
  29.  
  30.     128  set1  c[1]    -  set 1-byte unsigned character (uchar) number c
  31.     129  set2  c[2]    -  set 2-byte uchar number c
  32.     130  set3  c[3]    -  set 3-byte uchar number c
  33.     131  set4  c[+4]   -  set 4-byte signed character (schar) number c
  34.  
  35.     132  set_rule  a[+4]  b[+4]  -  set rule, height a, width b
  36.  
  37.     133  put1  c[1]   -  put 1-byte uchar c
  38.     134  put2  c[2]   -  put 2-byte uchar
  39.     135  put3  c[3]   -  put 3-byte uchar
  40.     136  put4  c[+4]  -  put 4-byte schar
  41.  
  42.     137  put_rule  a[+4]  b[+4]  -  put rule, height a, width b
  43.  
  44.     138  nop  -  do nothing
  45.  
  46.     139  bop  c0[+4]  ...  c9[+4]  p[+4]  -  beginning of page
  47.     140  eop                              -  end of page
  48.  
  49.     141  push  -  push (h,v,w,x,y,z) onto stack
  50.     142  pop   -  pop  (h,v,w,x,y,z) from stack
  51.  
  52.     143  right1  b[+1]  -  move right b units
  53.     144  right2  b[+2]  -  move right b units
  54.     145  right3  b[+3]  -  move right b units
  55.     146  right4  b[+4]  -  move right b units
  56.  
  57.     147  w0         -  move right w units
  58.     148  w1  b[+1]  -  move right b units, and set w = b
  59.     149  w2  b[+2]  -  move right b units, and set w = b
  60.     150  w3  b[+3]  -  move right b units, and set w = b
  61.     151  w4  b[+4]  -  move right b units, and set w = b
  62.  
  63.     152  x0         -  move right x units
  64.     153  x1  b[+1]  -  move right b units, and set x = b
  65.     154  x2  b[+2]  -  move right b units, and set x = b
  66.     155  x3  b[+3]  -  move right b units, and set x = b
  67.     156  x4  b[+4]  -  move right b units, and set x = b
  68.  
  69.     157  down1  a[+1]  -  move down a units
  70.     158  down2  a[+2]  -  move down a units
  71.     159  down3  a[+3]  -  move down a units
  72.     160  down4  a[+4]  -  move down a units
  73.  
  74.     161  y0         -  move right y units
  75.     162  y1  a[+1]  -  move right a units, and set y = a
  76.     163  y2  a[+2]  -  move right a units, and set y = a
  77.     164  y3  a[+3]  -  move right a units, and set y = a
  78.     165  y4  a[+4]  -  move right a units, and set y = a
  79.  
  80.     166  z0         -  move right z units
  81.     167  z1  a[+1]  -  move right a units, and set z = a
  82.     168  z2  a[+2]  -  move right a units, and set z = a
  83.     169  z3  a[+3]  -  move right a units, and set z = a
  84.     170  z4  a[+4]  -  move right a units, and set z = a
  85.  
  86.     171  fnt_num_0    -  set current font number (f) = 0
  87.     ...
  88.     234  fnt_num_63   -  set f = 63
  89.  
  90.     235  fnt1  k[1]   -  set f = k
  91.     236  fnt2  k[2]   -  set f = k
  92.     237  fnt3  k[3]   -  set f = k
  93.     238  fnt4  k[+4]  -  set f = k
  94.  
  95.     239  xxx1  k[1]  x[k]  -  special string x with k bytes
  96.     240  xxx2  k[2]  x[k]  -  special string x with k bytes
  97.     241  xxx3  k[3]  x[k]  -  special string x with k bytes
  98.     242  xxx4  k[4]  x[k]  -  special string x with (unsigned) k bytes
  99.  
  100.     243  fnt_def1  k[1] c[4] s[4] d[4] a[1] l[1] n[a+l]   -  define font k
  101.     244  fnt_def2  k[2] c[4] s[4] d[4] a[1] l[1] n[a+l]   -  define font k
  102.     245  fnt_def3  k[3] c[4] s[4] d[4] a[1] l[1] n[a+l]   -  define font k
  103.     246  fnt_def4  k[+4] c[4] s[4] d[4] a[1] l[1] n[a+l]  -  define font k
  104.  
  105.     247  pre  i[1]  num[4]  den[4]  mag[4]  k[1]  x[k]  -  begin preamble
  106.  
  107.     248  post  p[4] num[4] den[4] mag[4] l[4] u[4] s[2] t[2]  -  begin postamble
  108.     249  post_post  q[4] i[1] 223 ... 223                     -  end postamble
  109.  
  110.     250  -  undefined
  111.     ...
  112.     255  -  undefined
  113.  
  114. In bop:
  115.  
  116.     c0[+4] ... c9[+4]  =  page counters, \`a la TeX.
  117.     p[+4]  =  pointer to previous bop (its byte address); first bop has p = -1 .
  118.  
  119. In the font definitions:
  120.  
  121.     c[4]  =  check sum for TFM file.
  122.     s[4]  =  scale factor, in DVI units.
  123.     d[4]  =  design size, in DVI units.
  124.     a[1]  =  length of the "area" or directory.
  125.     l[1]  =  length of the font name.
  126.     n[a+l]  =  area and font name string(s).
  127.  
  128. In the preamble:
  129.  
  130.     i[1]  =  DVI format ID  =  2, except  TeX-XeT  has  3.
  131.     num[4]  =  numerator   of 100 nm / DVI unit.
  132.     den[4]  =  denominator of 100 nm / DVI unit.
  133.     mag[4]  =  1000 * magnification.
  134.     k[1]  =  comment length.
  135.     x[k]  =  comment string.
  136.  
  137. In the postamble:
  138.  
  139.     p[4]  =  pointer to final bop.
  140.     num[4], den[4], mag[4]  =  duplicates of values in preamble.
  141.     l[4]  =  height-plus-depth of tallest page, in DVI units.
  142.     u[4]  =  width of widest page, in DVI units.
  143.     s[2]  =  maximum stack depth needed to process this DVI file.
  144.     t[2]  =  total number of pages (bop commands) present.
  145.  
  146. In the post-postamble:
  147.  
  148.     q[4]  =  pointer to the "post" command that started the postamble.
  149.     i[1]  =  DVI format ID, as in the preamble.
  150.     223 ... 223  =  at least four "223" bytes.
  151.  
  152. ---------------
  153. EOF ``dvi.doc''
  154. ---------------
  155.